package com.ce.pms.charge.service;

import java.util.List;
import java.util.Map;

import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.charge.vo.ChargeItemVO;
import com.sitechasia.webx.core.support.Page;

public interface IChargeItemService extends IPmsBaseService {
	/**
	 * 方法描述: 查询最大的序号
	 * @author 胡煦
	 * Create on:2008-8-21
	 * @param
	 * @return short
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Short getMaxSeqNo();
	/**
	 * 方法描述: 根据收费项目名字模糊查询收费项目LIST
	 * @author 胡煦
	 * Create on:2008-8-26
	 * @param chargeItemName
	 * @return List<ChargeItemVO>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<ChargeItemVO> queryChargeItemListByName(String chargeItemName);
	/**
	 * 方法描述: 查询所有已被引用的收费项目
	 * @author 胡煦
	 * Create on:2008-8-20
	 * @param
	 * @return List<ChargeItemVO>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<ChargeItemVO> queryChargeItemListUsed();
	/**
	 * 方法描述:根据收费类型和走表类型查询收费项目
	 * @author 胡煦
	 * Create on:2008-8-22
	 * @param type
	 * @return List<ChargeItemVO>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<ChargeItemVO> queryChargeItemListByType(String chrgType,String meterType);
	/**
	 * 方法描述: 根据收费项目id查找实体
	 * @author 胡煦
	 * Create on:2008-8-7
	 * @param chargeItemId
	 * @return ChargeItemVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeItemVO findChargeItemById(Long chargeItemId);
	/**
	 * 方法描述:根据收费项目id字符串得到收费实体列表,如果传入chargeItemIds为空，则返回所有收费项目，filterSign 为true 则表示chargeItemIds是要过滤的id
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param chargeItemIds 字符串，如：1,2,3; filterSign
	 * @return List
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<ChargeItemVO> queryChargeItemList(String chargeItemIds,boolean filterSign);
	/**
	 * 方法描述: 分页查询收费项目列表
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param int, int
	 * @return Page
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Page queryChargeItemByPage(int pageNo,int pageSize,String orderStr);
	/**
	 *
	 * 功能描述: 得到收费项目及标准树列表。
	 * 将一个收费项目及标准节点和所有的收费项目放入一个Map中，再将Map返回。
	 *
	 * @author 胡煦
	 * Created on:2008-8-1
	 *
	 * 修改原因：
	 * @return List<Map> 返回结果
	 */
	public Map queryChargeItemAndStaTreeList();
	/**
	 * 方法描述: 检查收费项目名称是否唯一
	 *  注：新建判断chargeItemName的唯一性时，chargeItemId为null；修改判断chargeItemName的唯一性时，则需要传入修改前的chargeItemId<br>
	 * @author 胡煦
	 * Create on:2008-7-30
	 * @param bankName
	 * @return boolean：返回true表示已经被引用，false则未被引用
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public boolean checkChargeItemNameIsOnly(String chargeItemName,Long chargeItemId);
	/**
	 * 方法描述:新增收费项目
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param ChargeItemVO
	 * @return ChargeItemVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeItemVO addChargeItem(ChargeItemVO chargeItemVO);
	/**
	 * 方法描述:修改收费项目
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param ChargeItemVO
	 * @return ChargeItemVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeItemVO editChargeItem(ChargeItemVO chargeItemVO);
	/**
	 * 方法描述:删除收费项目
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param chargeItemId
	 * @return void
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public void deleteChargeItem(Long chargeItemId);
	/**
	 * 方法描述: 检查收费项目序号是否唯一
	 *  注：新建判断seqNo的唯一性时，chargeItemId为null；修改判断seqNo的唯一性时，则需要传入修改前的chargeItemId<br>
	 * @author 胡煦
	 * Create on:2008-7-30
	 * @param seqNo，chargeItemId
	 * @return boolean：返回true表示已经被引用，false则未被引用
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public boolean checkChargeItemSeqNoIsOnly(Short seqNo,Long chargeItemId);

	/***
	 * 功能描述:  获取指定类型的收费项目<br>
	 * @param chargeType
	 * @return
	 * Create author:yandawei <br>
	 * Create on:2008-10-22  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<ChargeItemVO> getAllChargeItemByType(String chargeType);

}
